/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controlador;

import java.util.*;
import modelo.IArticulosAlmacen;
import modelo.ArticulosAlmacen;
import modelo.IArticulosAlmacenModel;
import vista.IArticulosAlmacenView;
/**
 *
 * @author LEONIC
 */
public class ArticulosAlmacenController implements IArticulosAlmacenController{

    private IArticulosAlmacenModel model;
    private List<IArticulosAlmacenView> views=new ArrayList<IArticulosAlmacenView>();

    public void setup(IArticulosAlmacenModel model, List<IArticulosAlmacenView> views) {
        setModel(model);
        addViews(views);
        model.setController(this);

    }

    public void start() {
        for(IArticulosAlmacenView view:views)
            view.display();
    }

    private void addViews(List<IArticulosAlmacenView> views){
        for(IArticulosAlmacenView view:views)
            addView(view);
    }

    public void addView(IArticulosAlmacenView view) {
        view.setModel(model);
        view.setController(this);
        views.add(view);
    }

    public void removeView(IArticulosAlmacenView view) {
        views.remove(view);
    }

    public IArticulosAlmacenModel getModel() {
        return model;
    }

    public void setModel(IArticulosAlmacenModel model) {
        this.model=model;
    }

    public void actualizaArticulosAlmacenGesture(int id, int cantidad, double precio, String nombre, String observaciones,int cantidadComprar) {
        IArticulosAlmacen articulos=new ArticulosAlmacen(id,cantidad,precio,nombre,observaciones);
        getModel().actualizarArticulosAlmacen(articulos, cantidadComprar);
        int articulosquehay=getModel().obtenerArticulosAlmecen(id).getCantidad();
        if (articulosquehay<5){
            System.out.println ("Se va a hacer una compra automatica de 5 elementos");
            getModel().ComprarArticulosAlmacen(articulos, 5);
        }
    }

    public void devolverArticulosAlmacenGesture(int id, int cantidad, double precio, String nombre, String observaciones,int cantidadComprar) {
        IArticulosAlmacen articulos=new ArticulosAlmacen(id,cantidad,precio,nombre,observaciones);
        getModel().devolverArticulosAlmacen(articulos, cantidadComprar);
    }

    public void ComprarArticulosAlmacenGesture(int id, int cantidad, double precio, String nombre, String observaciones,int cantidadComprar) {
        IArticulosAlmacen articulos=new ArticulosAlmacen(id,cantidad,precio,nombre,observaciones);
        getModel().ComprarArticulosAlmacen(articulos, cantidadComprar);
    }

    public void fireDataModelChanged() {
        for (IArticulosAlmacenView view : views) {
            view.dataModelChanged();
        }
    }

    public List<IArticulosAlmacenView> getViews(){
        return this.views;
    }

}